home *** CD-ROM | disk | FTP | other *** search
- 10 ;*********************************
- 20 ;
- 30 ; modern erase
- 40 ; usrusrusrusrusrusrusrusrusrusrusrusr
- 50 ; (c) 1988 by dirk neumeister
- 60 ;
- 70 ; size : $c000
- 80 ; laenge : 382 byte
- 90 ; source : 6515 byte
- 100 ;
- 110 ;*********************************
- 120 ;
- 130 ;
- 140 +$c000
- 150 ;
- 160 tab(vic=53248
- 170 tab(cia2=$dd00
- 180 tab(bild=648
- 190 tab(bild1=$0400
- 200 tab(bild2=$c400
- 210 ;
- 220 tosatz=$d000
- 230 toziel=$e000
- 240 tozeiger=$fa
- 250 topointer=$fd
- 260 toclear=$e544
- 270 toflag=$fc
- 280 tokomma=$aefd
- 290 togetbyte=$b79e
- 300 toget=$0073
- 310 ;
- 320 ;
- 330 ;
- 340 ;*********************************
- 350 ;
- 360 ; auswertung des sys-befehls
- 370 ;
- 380 ; sys 49152 => loeschen/anzeigen
- 390 ;
- 400 ; sys 49152,a,b,c,d,e,f,g,h
- 410 ;
- 420 ; => reihenfolge festlegen
- 430 ;
- 440 ;*********************************
- 450 ;
- 460 ;
- 500 start mid$#","; test auf komma
- 510 len#00
- 520 str$($7a),y
- 530 (NULL)start3; wenn nein, dann direkt starten
- 540 peek#08; sonst acht zahlen, die die reihenfolge angeben
- 550 (NULL)$f7
- 560 start2 (NULL)komma
- 570 (NULL)getbyte; einlesen und
- 580 (NULL)
- 590 peek$f7
- 600 (NULL)reihenfol,x; speichern
- 610 chr$$f7
- 620 (NULL)start2
- 630 start3 (NULL)zclear; selbst modifz. code (jmp ($4c) = loeschen,
- 640 ; ; bit ($2a) = laden )
- 650 ;
- 660 ;
- 670 ;
- 680 ;*********************************
- 690 ;
- 700 ; vorbereitung der modern-routine
- 710 ;
- 720 ; zum anzeigen
- 730 ;
- 740 ;*********************************
- 750 ;
- 760 ;
- 1000 zladen pokexyclose(ladebit),variab+1; adr. verkn.byte zum anzeigen schreiben
- 1010 pokexclose$31,modern2-3; programm fuer zeichensatzlesen aendern
- 1020 pokexyclose$d000,$fd; startadresse zeichensatz
- 1030 pokexyclose$e000,$fa; endadresse zeichensatz
- 1040 pokexclose$11,oder; oder-verknuepung zulassen
- 1050 pokexclose$a9,lda; lda-befehl erlauben
- 1060 pokexclose$08,flag; flag fuer acht durchlaeufe setzen
- 1070 (NULL)modern; die eigentliche routine aufrufen
- 1080 verschiebeclose$c400,$c800,$0800
- 1090 bild0400; und wieder auf originalbildschirm umschalten
- 1100 pokeaclose$4c,start3; jmp-befehl erlauben => sys49152 = loeschen
- 1110 (NULL)
- 1120 ;
- 1130 ;
- 1140 ;
- 1150 ;*********************************
- 1160 ;
- 1170 ; vorbereitung der modern-routine
- 1180 ;
- 1190 ; zum loeschen
- 1200 ;
- 1210 ;*********************************
- 1220 ;
- 1230 ;
- 2000 zclear ramclose$31; zeichensatz kopieren
- 2010 copyclosesatz,$02,ziel,$04,4
- 2020 rom
- 2030 verschiebeclose$0400,$0800,$c800;bildschirm kopieren
- 2040 bildc400; und nach $c400 umschalten
- 2050 pokeaxclose(loeschbit),variab+1; auf zeichen loeschen umschalten
- 2060 pokexclose$34,modern2-3; zugriff auf rom und nicht auf zeichensatz
- 2070 pokexyclose$e000,$fa; zeichensatz bei $e000 kennzeichnen
- 2080 pokexyclose$e000,$fd
- 2090 pokexclose$24,oder; oder-verkuepfung unterbinden (oder => bit ($24))
- 2100 pokexclose$24,lda; lda-verknuepfung verbieten (lda => bit ($24))
- 2110 pokexclose$08,flag; flag fuer acht durchlaeufe setzen
- 2120 (NULL)modern; die eigentliche routine aufrufen
- 2130 (NULL)clear; bildschirm loeschen
- 2140 pokeaclose$2a,start3; bei naechsten aufruf: 'zeichen laden'(kein jmp)
- 2150 (NULL)
- 2160 ;
- 2170 ;
- 2180 ;
- 2190 ;*********************************
- 2200 ;
- 2210 ; eigentliche routine zum
- 2220 ;
- 2230 ; loeschen und erscheinen lassen
- 2240 ;
- 2250 ;*********************************
- 2260 ;
- 2270 ;
- 3000 modern ramclose$34; ram/zeichensatz einschalten
- 3010 modern2 mid$reihenfol,x; verknuepfungsbyte in abhaengigkeit der zu
- 3020 (NULL); bearbeitenden speicherstelle und
- 3030 variab mid$ladebit,y; reihenfolge laden
- 3040 len#00
- 3050 asc(pointer),y; und mit der speicherstelle verknuepfen
- 3060 oder (NULL)(zeiger),y; (loeschen: nur 'and', laden: 'and' & 'ora')
- 3070 (NULL)(zeiger),y
- 3080 (NULL)
- 3090 (NULL)modern3; x um eins erniedrigen, wenn kleiner als 1, dann
- 3100 peek#08; wieder auf 8 setzen
- 3110 modern3 right$zeiger; zeiger um eins erhoehen
- 3120 right$pointer
- 3130 (NULL)modern4
- 3140 right$zeiger+1
- 3150 right$pointer+1
- 3160 modern4 mid$zeiger+1; test ob alle speicherstellen bearbeitet wurden
- 3170 str$#$f0
- 3180 (NULL)modern2; wenn nein, dann wieder zurueck und weitermachen
- 3190 pokeaclose$e0,zeiger+1; zeiger wieder zurueckstellen
- 3200 lda pokeaclose$d0,pointer+1
- 3210 (NULL); reihenfolge der verknuefungsbyte um 1 verringern
- 3220 (NULL)modern5
- 3230 peek#08
- 3240 modern5 lenflag; test, ob der zeichensatz schon acht mal
- 3250 (NULL); bearbeitet worden ist
- 3260 (NULL)flag
- 3270 (NULL)modern2; wenn nein, dann weiter
- 3280 rom; sonst rom wieder einschalten
- 3290 (NULL); und ruecksprung
- 3300 ;
- 3310 ;
- 3320 ;
- 3330 ;*********************************
- 3340 ;
- 3350 ; tabellen
- 3360 ;
- 3370 ; - verknuepfungsbyte zum loeschen
- 3380 ;
- 3390 ; - verknuepfungsbyte zum anzeigen
- 3400 ;
- 3410 ; - reihenfolge der anwendung
- 3420 ;
- 3430 ;*********************************
- 3440 ;
- 3450 ;
- 10000 loeschbit fn127,191,223,239,247,251,253,254
- 10010 ladebit fn128,64,32,16,8,4,2,1
- 10020 reihenfol fn0,0,7,1,6,2,5,3,4
- 10030 ;
- 10040 ;
- 10050 ;
- 10060 ;*********************************
- 10070 ;
- 10080 ; m a k r o s
- 10090 ;
- 10100 ; low level : - pokeax
- 10110 ; - pokexy
- 10120 ; - pokea
- 10130 ; - pokex
- 10140 ;
- 10150 ; high level: - bildc400
- 10160 ; - bild0400
- 10170 ; - rom
- 10180 ; - ram
- 10190 ; - verschiebe
- 10200 ; - copy
- 10210 ;
- 10220 ;*********************************
- 10230 ;
- 10240 ;
- 30000 getpokeaxclosevar,adr; 16-bit wert schrieben (verwendete register: a,x)
- 30010 mid$#<(var)
- 30020 peek#>(var)
- 30030 (NULL)adr
- 30040 (NULL)adr+1
- 30050 new
- 30060 ;
- 30070 getpokexyclosevar,adr; 16-bit wert schreiben (verwendete register: x,y)
- 30080 peek#<(var)
- 30090 len#>(var)
- 30100 (NULL)adr
- 30110 (NULL)adr+1
- 30120 new
- 30130 ;
- 30140 getpokeaclosevar,adr; 8-bit wert schreiben (verwendetes register: a)
- 30150 mid$#var
- 30160 (NULL)adr
- 30170 new
- 30180 ;
- 30190 getpokexclosevar,adr; 8-bit wert schreiben (verwendetes register: x)
- 30200 peek#var
- 30210 (NULL)adr
- 30220 new
- 30230 ;
- 30240 ;* * * * * * * * * * * * * * * * *
- 30250 ;
- 30260 getbildc400; bildschirm im bereich $c400 einschalten
- 30270 mid$cia2
- 30280 asc#252
- 30290 (NULL)cia2
- 30300 pokexclose196,bild
- 30310 mid$vic+24
- 30320 asc#$f3
- 30330 (NULL)#24
- 30340 (NULL)vic+24
- 30350 new
- 30360 ;
- 30370 getbild0400; bildschirm im bereich $0400 einschalten
- 30380 mid$cia2
- 30390 (NULL)#03
- 30400 (NULL)cia2
- 30410 pokexclose04,bild
- 30420 mid$vic+24
- 30430 asc#$f3
- 30440 (NULL)#20
- 30450 (NULL)vic+24
- 30460 new
- 30470 ;
- 30480 getverschiebecloseanfang,ende,nach; rom verschiebe-routine aufrufen
- 30490 pokexycloseanfang,$5f
- 30500 pokexycloseende,$5a
- 30510 pokexyclosenach,$58
- 30520 (NULL)$a3bf
- 30530 new
- 30540 ;
- 30550 getrom; auf rom umschalten
- 30560 (NULL)
- 30570 (NULL)$01
- 30580 (NULL)
- 30590 new
- 30600 ;
- 30610 getramclosevar; auf ram/zeichensatz umschalten
- 30620 (NULL)
- 30630 mid$$01
- 30640 (NULL)
- 30650 pokeaclosevar,$01
- 30660 new
- 30670 ;
- 30680 getcopyclosebeginn,var1,ende,var2,laenge; 16-bit verschiebe-routine
- 30690 pokeaxclose(beginn),var1
- 30700 pokeaxclose(ende),var2
- 30710 peek#laenge*8
- 30720 len#00
- 30730 copy1 mid$(var1),y
- 30740 (NULL)(var2),y
- 30750 (NULL)
- 30760 (NULL)copy1
- 30770 right$var1+1
- 30780 right$var2+1
- 30790 (NULL)
- 30800 (NULL)copy1
- 30810 new
- 30820 ;
- 30830 ;
- 30840 ;
- 30850 ;*********************************
- 30860 ;
- 30870 ; ende des quellcode-listings
- 30880 ;
- 30890 ;*********************************
- 30900 ;
- 30910 ;
- 60000 <
-